
#include <linux/version.h>
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/vmalloc.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/time.h>
#include <linux/ip.h>
#include <net/sock.h>
#include <net/net_namespace.h>


#ifndef SVN_REV
#define SVN_REV "N/A"
#endif

#define DRAGONET 	"dragonet"
#define PF_DRAGONET  	28 		/* no conflict with include/linux/socket.h */

/* kernel space */
#ifdef __KERNEL__

#define DPRINTK(klevel, fmt, args...) \
		printk(KERN_##klevel DRAGONET "@[%s:%d]: " fmt, \
			__FUNCTION__, __LINE__, ##args)

struct drg_sock 
{
	struct sock           sk; /* It MUST be the first element */
	struct packet_type    prot_hook;
	spinlock_t            bind_lock;
};


/**
 * function define
 */
int drg_sock_init(void);
void drg_sock_exit(void);
int drg_proc_init(void);
void drg_proc_exit(void);

int drg_stub(void);

#endif /* __KERNEL__ */

